package com.example.test_touch

import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.MotionEvent
import android.widget.ScrollView

/**
 * @author ytx
 * @date 2025-09-27 08:18
 * @description 内部拦截法
 */
class ChildScrollView:ScrollView {
    constructor(context: Context):this(context,null)
    constructor(context: Context, attributeSet: AttributeSet?):this(context,attributeSet,0)
    constructor(context: Context, attributeSet: AttributeSet?, defStyleAttr:Int):super(context,attributeSet,defStyleAttr)

    var startX:Float = 0f
    var startY:Float = 0f
    /**
     * 分发事件：
     * 判断用户滑动方向：横向还是纵向----》申请父容器不拦截
     */
    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        if (ev?.action == MotionEvent.ACTION_DOWN){
            Log.d("TAG", "dispatchTouchEvent: 按下")
            //记录起始位置
            startX = ev.x
            startY = ev.y
        }else if (ev?.action == MotionEvent.ACTION_MOVE){
            Log.d("TAG", "dispatchTouchEvent:移动 ")
            if (Math.abs(ev.x - startX) < Math.abs(ev.y - startY)){ //纵向滑动
                parent.requestDisallowInterceptTouchEvent(true) //申请父容器不要拦截
            }
        }else if (ev?.action == MotionEvent.ACTION_UP){
            Log.d("TAG", "dispatchTouchEvent:抬起 ")
        }
        return super.dispatchTouchEvent(ev)
    }


}